package com.lxw.question;

public class Q07 {
    /**
     * 题目描述
     * 魔术索引。 在数组A[0...n-1]中，有所谓的魔术索引，满足条件A[i] = i。给定一个有序整数数组，
     * 编写一种方法找出魔术索引，若有的话，在数组A中找出一个魔术索引，如果没有，则返回-1。若有多个魔术索引，
     * 返回索引值最小的一个。
     *
     * 来源：力扣（LeetCode）
     * 链接：https://leetcode-cn.com/problems/magic-index-lcci
     * @param nums
     * @return
     */
    /**
     * 使用最简单的方法
     * @param nums
     * @return
     */
    public static int findMagicIndex(int[] nums) {
        int theMinMagixIndex = Integer.MAX_VALUE;
        for(int i = 0 ; i < nums.length ; i++){

            if(nums[i] == i && theMinMagixIndex >= i){
                theMinMagixIndex = i;
                break;
            }
        }
        return theMinMagixIndex != Integer.MAX_VALUE ? theMinMagixIndex : -1;
    }


    /**
     * 试图使用二分法
     * @param nums
     */
    public static int findMagicIndex2(int[] nums){
        int len = nums.length;
        len = len / 2;

        while(len > 1){
            if(nums[len] == len){

            }
        }
        return -1;
    }

    public static void main(String[] args){
        int[] nums = {1,1,3,4,4};
        int result = findMagicIndex(nums);
        System.out.println(result);
    }
}
